package es.ucm.is.www.GUI.client.admin;

import com.google.gwt.core.client.GWT;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.rpc.ServiceDefTarget;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.ClickListener;
import com.google.gwt.user.client.ui.HTML;
import com.google.gwt.user.client.ui.RootPanel;
import com.google.gwt.user.client.ui.VerticalPanel;
import com.google.gwt.user.client.ui.Widget;
import com.google.gwt.user.client.ui.Composite;

import es.ucm.is.www.GUI.client.Constantes;
import es.ucm.is.www.GUI.client.panels.ErrorPanel;
import es.ucm.is.www.GUI.client.panels.PanelWaitingRight;
/**
 * <p>Title: PanelInfoBlock.java </p>
 *
 * <p>Description: Panel auxiliar que nos informa del usuario que ha sido bloqueado. </p>
 *
 * <p>Copyright: Enrique Lopez Manas </p>
 *
 * @author Enrique Lopez Manas
 * @author Angel Ruiz Alonso
 * @version 1.0
 * @see
 */
public class PanelInfoBlock extends Composite {
	 final VerticalPanel panel = new VerticalPanel();
	 final HTML title = new HTML("<b>Bloqueo</b>");
	 //HTML htmlBorrado = null;
	 final Button desbloquear = new Button("Desbloquear");
	 final Button volver = new Button("Volver");
	 /**
	  * Metodo constructor de la clase
	  */
	 public PanelInfoBlock(final String user) {
		 /*
		 Constantes.setLeft(null);
		 Constantes.setRight(null);
		 Constantes.setLeft(new PanelLateralAdmJugadores());
		 panel.add(title);
		 panel.add(htmlBorrado);
*/
		 HTML jugadorBlo = new HTML("El jugador: <b>"+user+"</b> ha sido bloqueado");
		 volver.addClickListener(new ClickListener() {
			 public void onClick(Widget sender) {
				 Constantes.setLeft(new PanelLateralAdmJugadores());		 
				 Constantes.setRight(new BlockStatePanel());		 
			 
		 }});
		 panel.add(jugadorBlo);
		 panel.add(volver);
		 panel.add(desbloquear);
		 
		 desbloquear.addClickListener(new ClickListener(){

			public void onClick(Widget sender) {
				//Llamada al servlet para desbloquear un usuario
				AdminServiceAsync servicio = (AdminServiceAsync) GWT.create(AdminService.class);
				ServiceDefTarget endpoint = (ServiceDefTarget) servicio;
				endpoint.setServiceEntryPoint(GWT.getModuleBaseURL() + "servletAdmin");
				final PanelWaitingRight p = new PanelWaitingRight("Desbloqueando usuario");
				p.mostrar();
				AsyncCallback<Boolean> callback = new AsyncCallback<Boolean>(){

					public void onFailure(Throwable caught) {
						p.ocultar();
						ErrorPanel error = new ErrorPanel("Error conectando con el servidor...");
						error.show();
					}

					public void onSuccess(Boolean result) {
						if(result){
							 p.ocultar();
							 Constantes.setLeft(new PanelLateralAdmJugadores());		 
							 Constantes.setRight(new BlockStatePanel());	
						}else{
							p.ocultar();
							ErrorPanel error = new ErrorPanel("Error desbloqueando al usuario...");
							error.show();
						}
					}
				};
			servicio.unBlockUser(user,callback); 
			}
			 
		 });
		 
		 initWidget(panel);
	 }}
